package cn.zwx.goods.svc.rpc.facade;


import cn.zwx.base.entity.ResponseEntity;
import cn.zwx.base.exception.BizWrapException;
import cn.zwx.goods.svc.rpc.dto.*;
import cn.zwx.goods.svc.rpc.vo.CategoryInfoVO;
import cn.zwx.goods.svc.rpc.vo.CategoryTreeVO;
import cn.zwx.goods.svc.rpc.vo.CategoryVO;
import cn.zwx.goods.svc.rpc.vo.InsertCategoryVO;

import java.util.List;

/**
 * @author zhangwenxue
 */
public interface DubboCategoryService {


    /**
     * 查询类目列表接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<List<CategoryInfoVO>> selectList(CategoryListDTO dto)throws BizWrapException;


    /**
     * 查询类目列表(树结构)接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<List<CategoryTreeVO>> selectTreeList(CategoryListDTO dto)throws BizWrapException;

    /**
     * 根据类目id类目信息接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<CategoryVO> selectByInfo(CategoryInfoDTO dto)throws BizWrapException;

    /**
     * 新增类目接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<InsertCategoryVO> insert(InsertCategoryDTO dto)throws BizWrapException;


    /**
     * 新增类目属性(覆盖)接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<Void> insertAttr(InsertCategoryAttrDTO dto)throws BizWrapException;

    /**
     * 修改类目接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<Void> modify(ModifyCategoryDTO dto)throws BizWrapException;

    /**
     * 删除类目接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<Void> delete(DeleteCategoryDTO dto)throws BizWrapException;


}
